// request.js 封装一个函数

import {
	toLogin
} from './toLogin';
/**
 * 参数就是配置对象
 */ // 定义请求地址
// const BASE_URL = "http://106.14.135.133/api/"
const BASE_URL = "https://th.biboting.cn/api/"


import store from '../store';

function service(obj) {
	obj.url = obj.url || ''; // 请求路径
	obj.method = obj.method || 'GET'; //请求方式
	obj.data = obj.data || {}; //请求携带的数据
	obj.header = obj.header || 'application/json'; //请求头信息 content-type
	obj.loading = obj.loading === false ? false : true; //是否显示请求加载中
	obj.requestTime = obj.requestTime || 500; //多久时间内完成网络请求，则不显示提示框

	let loadingStatus = true;
	//定义网络请求如果在一定时间内没有完成，则显示加载中提示框，默认时间为：500毫秒
	setTimeout(() => {
		if (loadingStatus && obj.loading) {
			uni.showLoading({
				title: "加载中",
				mask: true
			})
		}
	}, obj.requestTime)


	//返回Promise对象
	return new Promise((resolve, reject) => {
		uni.request({
			url: BASE_URL + obj.url,
			method: obj.method,
			data: obj.data,
			header: {
				'Content-Type': obj.header,
				'terminal': 10,
				'Authorization': 'Bearer ' + store.state.app.token
			},
			success: res => {
				if (res.data.code === 200 || res.data.code === 0) {
					resolve(res.data);
				} else if ([401].indexOf(res.data.code) !== -1) {
					uni.showToast({
						icon: 'none',
						title: res.data.msg || res.data.message || '未登录'
					})
					setTimeout(() => {
						toLogin();
					}, 500)
					reject(res.data);
				} else if ([410000, 410001, 410002].indexOf(res.data.code) !== -1) {
					toLogin();
					reject(res.data);
				} else if ([1004024005, 1004028001, 1004024006, 1004024010, 1004024007, 1004024008,
						1004024009
					].indexOf(res.data.code) !== -1) {
					// 扫码/序号集章时code处理 
					// 1004024010 msg：二维码过期请重新扫码
					// 1_004_024_007: 集章序号使用次数已达上限
					// 1_004_024_008: 活动还未开始
					// 1_004_024_009: "活动已经结束
					resolve(res.data);
				} else if ([1004027001, 1004027002, 1004027003].indexOf(res.data.code) !== -1) {
					// 扭蛋券兑换时code处理 
					resolve(res.data);
				} else {
					uni.showToast({
						icon: 'none',
						title: res.data.msg || res.data.message || '系统错误'
					})
					reject(res.data.msg || res.data.message || '系统错误');
				}
			},
			fail: err => {
				reject(err);
			},
			complete: () => {
				if (loadingStatus && obj.loading) {
					uni.hideLoading();
				}
				loadingStatus = false;
			}
		})
	})

}

// 记得把函数暴露出去
export default service;
